package com.shijie.log.formatter;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * 字段值格式化接口：自定义新旧值的字符串转换规则
 */
@FunctionalInterface
public interface ValueFormatter {
    /**
     * 格式化字段值
     * @param value 原始值（旧值/新值）
     * @return 格式化后的字符串
     */
    String format(Object value);

    /**
     * 默认格式化器：等同于String.valueOf（兼容原有逻辑）
     */
    ValueFormatter DEFAULT_FORMATTER = value -> value == null ? "" : String.valueOf(value);

    /**
     * 日期格式化器：自定义日期格式（返回字符串）
     */
    static ValueFormatter dateFormatter(String pattern) {
        return value -> {
            if (value == null) return "";
            if (value instanceof LocalDateTime) {
                return DateTimeFormatter.ofPattern(pattern).format((LocalDateTime) value);
            }

            return new SimpleDateFormat(pattern).format((Date) value);

        };
    }
}